﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

//IMPORTAMOS 

using EventSys.BussinesEntities;
using EventSys.BussinesLogic;
using Microsoft.Practices.Unity;

namespace EventSys.MVC4Web.Controllers
{
    
    public class AmbienteController : Controller
    {
        [Dependency]
        public IAmbienteService ambienteService { get; set; }

        [Dependency]
        public IUbicacionService ubicacionService { get; set; }
        
        // GET: /Auspiciador/

        public ActionResult Index()
        {
            var listaAmbiente = ambienteService.GetFromAllAmbiente();
            return View(listaAmbiente);
        }
        [HttpPost]
        public ActionResult Index(string criterio)
        {
            var buscarAmbiente = ambienteService.GetFromAllAmbienteByCriterio(criterio);//GetFromAllAmbiente(criterio);

            return View(buscarAmbiente);
        }
        //
        // GET: /Auspiciador/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /Auspiciador/Create

        public ActionResult Create()
        {

            var ubicacion = ubicacionService.MostrarUbicaciones();

            ViewData["idUbicacion"] = new SelectList(ubicacion, "idUbicacion", "Descripcion");
            return View();
        }

        //
        // POST: /Auspiciador/Create

        [HttpPost]
        public ActionResult Create(Ambiente ambiente)
        {
            ambienteService.RegistrarAmbiente(ambiente);
            return RedirectToAction("Index");


            //try
            //{
            //    // TODO: Add insert logic here
            //    ambienteService.RegistrarAmbiente(ambiente);

            //    return View();
            //}
            //catch (Exception ex)
            //{
            //    ViewData["message"] = ex.Message;
            //    return View(ambiente);
            //}
        }

        //
        // GET: /Auspiciador/Edit/5

        public ActionResult Edit(int id)
        {
            var ambiente = ambienteService.AmbienteById(id);
            var ubicacion = ubicacionService.MostrarUbicaciones();

            ViewData["idUbicacion"] = new SelectList(ubicacion, "idUbicacion", "Descripcion", ambiente.idAmbiente);
                                                     //(categoria, "mostrar", "guardar");

            return View(ambiente);
        }

        //
        // POST: /Auspiciador/Edit/5

        [HttpPost]
        public ActionResult Edit(int id,Ambiente ambiente)
        {
            ambienteService.EditarAmbiente(ambiente);
            return RedirectToAction("Index");   

            //try
            //{
            //    ambienteService.EditarAmbiente(ambiente);
            //    return RedirectToAction("Index");
            //}
            //catch (Exception ex)
            //{
            //    ViewData["message"] = ex.Message;
            //    return View(ambiente);
            //}

            
        }
        //[HttpPost]
        //public ActionResult Edit(int id, Carrera carrera)
        //{
        //    try
        //    {
        //         TODO: Add update logic here
        //        carreraService.EditarCarrera(carrera);
        //        return RedirectToAction("Index");//View(carrera);
        //    }
        //    catch (Exception ex)
        //    {
        //        ViewData["message"] = ex.Message;
        //        return View(carrera);
        //    }
        //}

        //
        // GET: /Auspiciador/Delete/5

        public ActionResult Delete(int id)
        {
            ambienteService.EliminarAmbiente(id);
            return RedirectToAction("index");
        }

        //
        // POST: /Auspiciador/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        ///// para q se actualice el combo de facultades //////
        //[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult refreshUbicacion()
        {
            var ubicacion = ubicacionService.MostrarUbicaciones();
            List<SelectListItem> list = new List<SelectListItem>();
            foreach (Ubicacion p in ubicacion)
            {
                list.Add(new SelectListItem() { Value = p.idUbicacion.ToString(), Text = p.Descripcion });
            }
            return Json(list, JsonRequestBehavior.AllowGet);
        }

        public ActionResult GetAmbiente(string termino)
        {
            var lista = from a in ambienteService.GetFromAllAmbienteByCriterio(termino)
                        select new
                        {
                            value = a.idAmbiente,
                            label = a.Descripcion + " " + a.Actividads,
                            ambiente = new
                            {
                                Id = a.idAmbiente,
                                marca = a.Descripcion,
                            }
                        };

            return Json(lista, JsonRequestBehavior.AllowGet);
        }
    }
}